package Modelos;
import Escenario.*;


public class ModeloComportamientoImpl implements ModeloComportamiento{
	
	public EscenarioImpl aplicaModelo(EscenarioImpl esc, ParCV actual, Integer numCarril, Integer posParCV){
		
		ModeloAceleracionFlujoLibre madfl = new ModeloAceleracionFlujoLibre();
		ModeloAceleracionSeguimientoDeVehiculo masv = new ModeloAceleracionSeguimientoDeVehiculo();
		
		ModeloComportamiento mo = decide(esc, actual, madfl, masv);
		
		mo.aplicaModelo(esc, actual, numCarril, posParCV);
		
		return esc;
	}
	
	public ModeloComportamiento decide(EscenarioImpl esc, ParCV actual, ModeloAceleracionFlujoLibre madfl, ModeloAceleracionSeguimientoDeVehiculo masv){
		
		ModeloComportamiento modelo;
		
		double distinfluencia = actual.getDistanciaInfluenciaDinamica();
		double distancia = actual.getDistanciaActual();
		
		if(distinfluencia < distancia){
			modelo = madfl;
		}else{
			modelo = masv;
		}
		
		return modelo;
	}
	
}